#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define mkp make_pair
#define fir first
#define sec second
const int N = 1e5+5;
multiset<pii,greater<pii>>st[N];
int n;
vector<int>e[N];
int len[N];
void merge(int x,int y)
{
    if(st[x].size() < st[y].size()) st[x].swap(st[y]);
    while(!st[y].empty())
    {
        st[x].insert(*st[y].begin());
        st[y].erase(st[y].begin());
    }
}
void dfs(int u,int fa)
{
    int de = 0;
    for(auto v:e[u]) if(v != fa)
    {
        de++;
        dfs(v,u);
        merge(u,v);
    }
    int S = 1,S2 = 0;
    if(st[u].size() == 0)
    {
        st[u].insert(mkp(1,0));
    }
    else if(st[u].size() == 1)
    {
        auto p = *st[u].begin();
        st[u].clear();
        st[u].insert(mkp(p.fir,p.sec+1));
        st[u].insert(mkp(1,-1));
    }
    else
    {
        S += (*st[u].begin()).fir,S2 += (*st[u].begin()).sec,st[u].erase(st[u].begin());
        S += (*st[u].begin()).fir,S2 += (*st[u].begin()).sec,st[u].erase(st[u].begin());
        //cout<<u<<" "<<S<<"\n";
        st[u].insert(mkp(S,S2));
    }
}
int main()
{
    freopen("bird.in","r",stdin);
    freopen("bird.out","w",stdout);
    ios::sync_with_stdio(false);cin.tie(0);
    cin>>n;
    for(int i = 1,u,v;i < n;i++)
    {
        cin>>u>>v;
        e[u].push_back(v),e[v].push_back(u);
    }
    dfs(1,0);
    auto res = (*st[1].begin());
    st[1].erase(st[1].begin());
    if(res.sec > 1)
    {
        cout<<res.fir+1<<"\n";
    }
    else 
    {
        cout<<res.fir<<"\n";
    }
    return 0;
}